<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    
</body>
<script src="jquery.js"></script>
<script>

    // Promise  诺言  是一种异步编程解决方案（解决回调地狱问题） 内置对象    Promise原理
    // 有三种状态：  进行中pending  已成功resolve  已失败 reject
    // 两种情况  进行中-》成功     进行中-》失败
    // new  Promise(function(resolve,reject){})
    // 通过.then(成功函数,失败函数)
    
    // var p = new Promise(function(resolve,reject) {
    //     // 同步
    //     resolve("success")  ;
    //     reject("fail")  
    // })


    // 异步代码   resolve  reject  
    // p.then(function(arr) {
    //     alert(arr+"成功")
    // },function (err) {
    //     alert(err+"失败")
    // })

    // p.then(function(arr) {
    //     alert(arr+"成功")
    // }).catch(function (err) {
    //     alert(err+"失败")
    // })


    var p = new Promise(function(resolve,reject) {
        // 同步
        // resolve("success")  ;
        // reject("fail")  
        $.ajax({
            url:"data/arr.txt",
            dataType:"json",
            success(arr){
                resolve(arr)
            },
            error(err){
                reject(err)
            }
        })

    })


    // 异步代码   resolve  reject  
    p.then(function(arr) {
        alert(arr+"成功")
    },function (err) {
        alert(err+"失败")
    })




    var flag = true;
    // ajax是方法  返回一个Promise对象 
    var ajax = function () {
        console.log("执行代码一");
        if (flag) {
            return  new Promise(function(resolve,reject) {
                setTimeout(() => {
                    resolve("成功")
                }, 1000);
            })
        } else {
             return  new Promise(function(resolve,reject) {
                setTimeout(() => {
                    reject("失败")
                }, 1000);
                
            })
        }
    }



    ajax().then(function(arr) {
        alert(arr+"成功")
    }).catch(function (err) {
        alert(err+"失败")
    }).finally(() =>{
        alert("最后一定会执行的  一般用来回收资源")
    })
        
    




</script>
</html>